#ifndef UNITCLASS_H
#define UNITCLASS_H

#include <qstring.h>
#include <qbitarray.h>

enum UnitClass {MONSTER, WARRIOR, WHITE_MAGE, BLACK_MAGE, THIEF};

struct UnitClassProperties
{
public:
    UnitClassProperties();

    QString name;
    quint8 rank;
    QBitArray availableWeapons;
    QBitArray availableArmors;
    QBitArray availableClasses;
    qint8 moveBonus;
};

class UnitClassFactory {
    //Singleton that manages the unit classes
public:
    static UnitClassFactory& getInstance();

private:
    //The UnitClassFactory must be created using getInstance() as it's a singleton
    UnitClassFactory();
    UnitClassFactory(const UnitClassFactory&);
    UnitClassFactory& operator=(const UnitClassFactory&);

    UnitClassProperties m_classes[8];
};

#endif // UNITCLASS_H
